﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataContext
{
    public class StoreDao
    {
        private BauteileDBEntities _db;

        public StoreDao()
        {
            _db = new BauteileDBEntities();
        }

        private void DeleleStoreByIdOnCasecadeRecursive(int StoreID)
        {
            foreach (Store_Part temp in _db.Store_Part.Where(c => c.StoreID == StoreID).ToList())
            {
                _db.Store_Part.Remove(temp);
            }
            foreach (Store temp in _db.Store.Where(c => c.ParrentStoreID == StoreID).ToList())
            {
                DeleleStoreByIdOnCasecade(temp.StoreID);
            }
            _db.Store.Remove(_db.Store.Where(c => c.StoreID == StoreID).FirstOrDefault());
            
        }

        public void DeleleStoreByIdOnCasecade(int StoreID)
        {
            DeleleStoreByIdOnCasecadeRecursive(StoreID);
            _db.SaveChanges();
        }

        public List<Store> GetAllParentStores()
        {
            return _db.Store.Where(c => c.ParrentStoreID == null).ToList();
        }

        public List<RootStore> GetAllRootStores()
        {
            RootStore rootStore = new RootStore();
            rootStore.Description = "Weixi's Root Store";
            rootStore.Name = "Bauteileverwaltung";
            rootStore.ParentStores = this.GetAllParentStores();
            List<RootStore> list = new List<RootStore>();
            list.Add(rootStore);
            return list;
        }
    }
}
